const { getHomeNewsList } = require("../../utils/newsAPI");

Page({
  data: {
    categories: [
      { "id": 3, "name": "财经" },
      { "id": 4, "name": "科技" },
      { "id": 5, "name": "娱乐" },
      { "id": 6, "name": "体育" },
      { "id": 7, "name": "政治" },
      { "id": 8, "name": "文化" },
      { "id": 9, "name": "社会" },
      { "id": 10, "name": "教育" },
      { "id": 11, "name": "军事" },
      { "id": 12, "name": "健康" },
      { "id": 13, "name": "环境" },
    ],
    videos: [],
    selectedCategory: 0, // 默认选中第一个分类
    commentSectionVisible: false, // 控制评论区的显示与隐藏
    commentContent: "" // 评论输入框的内容
  },

  // 页面加载时获取视频列表
  onLoad() {
    const videos = getHomeNewsList('国际')
        // 确保 comments 初始化为数组
        if (!Array.isArray(videos.comments)) {
          videos.comments = [];
        }

        this.setData({
          videos
        });
  },
  goToCategory(e) {
    const index = e.currentTarget.dataset.index
    console.log(this.data.categories[index].name)
    this.setData({
      videos: getHomeNewsList(this.data.categories[index].name)
    });
    this.setData({
      selectedCategory: index,
    });
  },
  onSwiperChange: function (e) {
    const currentIndex = e.detail.current;
  
    // 获取当前播放的视频索引
    const prevIndex = this.data.videos.findIndex(video => video.isPlaying);
    
    // 如果上一个视频存在且与当前视频不同
    if (prevIndex !== -1 && prevIndex !== currentIndex) {
      // 关闭上一个视频的评论区
      const prevVideo = this.data.videos[prevIndex];
      // prevVideo.isContentExpanded = false;  // 关闭评论区
      prevVideo.isPlaying = false;  // 暂停上一个视频
  
      // 更新视频列表，确保状态同步
      this.setData({
        videos: this.data.videos
      });
  
      // 停止播放上一个视频
      const prevVideoId = `video-${prevIndex}`;
      const prevVideoContext = wx.createVideoContext(prevVideoId);
      prevVideoContext.pause();
    }
  
    // 播放当前视频
    const currentVideo = this.data.videos[currentIndex];
    currentVideo.isPlaying = true;  // 设置当前视频为播放状态
    const currentVideoId = `video-${currentIndex}`;
    const currentVideoContext = wx.createVideoContext(currentVideoId);
    currentVideoContext.play();
  
    // 更新视频播放状态
    const videos = this.data.videos.map((video, index) => ({
      ...video,
      isPlaying: index === currentIndex,  // 只有当前视频播放
    }));
  
    // 更新当前视频
    this.setData({
      videos,
      currentVideo: videos[currentIndex],
    });
  },
  

  // 切换新闻内容展开/收起
  toggleContentExpansion: function (e) {
    const index = e.currentTarget.dataset.index;
    const videos = this.data.videos;
    const currentVideo = videos[index];

    // 切换展开/收起状态
    currentVideo.isContentExpanded = !currentVideo.isContentExpanded;

    // 计算展开时的最大高度
    if (currentVideo.isContentExpanded) {
      currentVideo.maxHeight = '50vh'; // 展开后不限制高度
    } else {
      currentVideo.maxHeight = '200rpx'; // 折叠后设定最大高度
    }

    this.setData({
      videos
    });
  },

  // 切换点赞状态
toggleLike: function (e) {
  const index = e.currentTarget.dataset.index; // 获取索引
  const videos = this.data.videos;
  
  if (index !== undefined && index >= 0 && index < videos.length) {
    const video = videos[index]; // 通过索引找到对应的视频
    
    // 切换点赞状态
    video.isLiked = !video.isLiked;
    video.likeCount += video.isLiked ? 1 : -1;

    // 更新视频数据
    this.setData({
      videos
    });
  } else {
    console.error('视频索引无效');
  }
},

// 切换收藏状态
toggleFavorite: function (e) {
  const index = e.currentTarget.dataset.index; // 获取索引
  const videos = this.data.videos;

  if (index !== undefined && index >= 0 && index < videos.length) {
    const video = videos[index]; // 通过索引找到对应的视频

    // 切换收藏状态
    video.isFavorited = !video.isFavorited;
    video.collectCount += video.isFavorited ? 1 : -1;

    // 更新视频数据
    this.setData({
      videos
    });
  } else {
    console.error('视频索引无效');
  }
},

  // 处理视频播放结束
  onVideoEnd: function () {
    wx.showToast({
      title: "播放结束",
      icon: "none",
    });
  },

  // 处理视频加载错误
  onVideoError: function (e) {
    console.error("视频加载失败:", e);
    wx.showToast({
      title: "视频加载失败",
      icon: "error",
    });
  },

  // 返回到视频流的状态
  goBack: function () {
    this.setData({
      isVideoPlaying: false,
    });
  },

  // 显示/隐藏评论区
  toggleCommentSection: function () {
    this.setData({
      commentSectionVisible: !this.data.commentSectionVisible
    });
  },
    // 显示/隐藏评论区域
    showCommentSection: function () {
      this.setData({
        commentSectionVisible: !this.data.commentSectionVisible
      });
    },

  // 跳转到分享页面
  goToShare: function () {
    wx.showToast({
      title: "分享功能开发中",
      icon: "none",
    });
  },
  submitComment: function () {
    console.log(this.data.videos);
    console.log(this.data.commentContent);
  
    // 创建新评论对象
    const newComment = {
      commentId: this.data.videos.comments.length + 1,  // 注意这里的 `comments` 可能未定义
      author: '我',
      time: '刚刚',
      content: this.data.commentContent,
      likes: 0,
      authorAvatar: '/images/my_dianji.png'
    };
  
    // 深拷贝现有新闻对象，避免直接修改 this.data.videos
    const videos = this.data.videos || [];  // 确保是一个空数组而不是 undefined
  
    // 确保每个视频对象有一个 comments 数组
    videos.forEach(video => {
      if (!video.comments) {
        video.comments = [];  // 如果没有 comments 属性，初始化为空数组
      }
    });
  
    // 更新评论内容
    const updatedNews = JSON.parse(JSON.stringify(videos));  // 深拷贝
  
    // 将新评论插入到第一个位置
    updatedNews.forEach(video => {
      video.comments.unshift(newComment);  // 将新评论插入到当前视频的评论列表
    });
  
    // 更新评论数量（这里只是简单增加，可以根据需要修改逻辑）
    updatedNews.forEach(video => {
      video.commentCount = video.comments.length;  // 更新每个视频的评论数量
    });
  
    console.log("新评论数据：", newComment);
    console.log("更新后的评论列表：", updatedNews[0].comments);  // 假设操作第一个视频的评论
  
    // 更新页面数据
    this.setData({
      videos: updatedNews,  // 更新视频数据
      commentContent: '',    // 清空评论输入框
      commentSectionVisible: true  // 确保评论区显示
    });
  
    // 提示评论提交成功
    wx.showToast({
      title: '评论已提交',
      icon: 'success'
    });
  },
  
});
